package fr.upstlse.glre.client.vo.communiquer;

import java.util.Date;
import java.util.LinkedList;
import java.util.List;

import com.extjs.gxt.ui.client.widget.Html;

import fr.upstlse.glre.client.constante.fields.MessageConstante;
import fr.upstlse.glre.client.vo.user.UserVOGWT;


/**
 * 
 */
public class MessageVOGWT
    implements java.io.Serializable
{
    /**
	 * 
	 */
	private static final long serialVersionUID = 7231882734289423166L;
	
	private long id;

    private String titre;

    private String contenu;

    private Date date;

    private MessageEtatGWT etat;

    private MessageVOGWT parent;
    
    private MessageVOGWT fils;

    private UserVOGWT expediteur;

	public MessageVOGWT()
    {
        this.id = 0;
        this.titre = null;
        this.contenu = null;
        this.date = null;
        this.etat = null;
        this.expediteur = null;
    }

	public long getId() {
		return id;
	}

	public void setId(long pId) {
		id = pId;
	}

	public String getTitre() {
		return titre;
	}

	public void setTitre(String pTitre) {
		titre = pTitre;
	}

	public String getContenu() {
		return contenu;
	}

	public void setContenu(String pContenu) {
		contenu = pContenu;
	}

	public Date getDate() {
		return date;
	}

	public void setDate(Date pDate) {
		date = pDate;
	}

	public MessageEtatGWT getEtat() {
		return etat;
	}

	public void setEtat(MessageEtatGWT pEtat) {
		etat = pEtat;
	}

	public MessageVOGWT getParent() {
		return parent;
	}

	public void setParent(MessageVOGWT pParent) {
		parent = pParent;
	}

	public UserVOGWT getExpediteur() {
		return expediteur;
	}

	public void setExpediteur(UserVOGWT pExpediteur) {
		expediteur = pExpediteur;
	}
	
	public MessageVOGWT getFils() {
		return fils;
	}

	public void setFils(MessageVOGWT pFils) {
		fils = pFils;
	}

	public Html getHeader() {
		String lDeText = MessageConstante.LABEL_DE_TEXT.getValue() + ": " + getExpediteur().getLogin();
		String lDateText = MessageConstante.LABEL_DATE_TEXT.getValue() + ": " + getDate();
		String lObjetText = MessageConstante.LABEL_OBJET_TEXT.getValue() + ": " + getTitre();
		
		String lHeader = lDeText + lDateText + lObjetText;
		Html lHtml = new Html();
		lHtml.setHtml(lHeader);
		
		return lHtml;
	}
	
	public List<MessageVOGWT> getAncetres() {
		List<MessageVOGWT> lAncetres = new LinkedList<MessageVOGWT>();
		MessageVOGWT lAncetre = getParent();
		while(lAncetre != null) {
			lAncetres.add(lAncetre);
			lAncetre = lAncetre.getParent();
		}
		return lAncetres;
	}
}